/*
数组实例的find方法，用于找出第一个符合条件的数组成员。
它的参数是一个回调函数，所有数组成员依次执行该回调函数，直到找出第一个返回值为true的成员，然后返回该成员。
如果没有符合条件的成员，则返回undefined。
*/

[1, 4, -5, 10].find((n) => n < 0)
// -5  省去了循环的麻烦

[1, 5, 10, 15].find(function(value, index, arr) {
	return value > 9;
}) // 10  可恶啊 还是个循环


//数组实例的findIndex方法的用法与find方法非常类似
[1, 5, 10, 15].findIndex(function(value, index, arr) {
	return value > 9;
}) // 2   返回第一个符合条件的数组成员的位置，如果所有成员都不符合条件，则返回-1。


//这两个方法都可以接受第二个参数，用来绑定回调函数的this对象。
function f(v) {
	return v > this.age;
}
let person = {
	name: 'John',
	age: 20
};
[10, 12, 26, 15].find(f, person); // 26


//另外，这两个方法都可以发现NaN，弥补了数组的indexOf方法的不足。
[NaN].indexOf(NaN)
// -1

[NaN].findIndex(y => Object.is(NaN, y))
// 0
